/// <reference types="cypress" />

it('Referential equality', () => {
  cy.visit('/app/referential-equality')
  cy.contains('#hydration-marker', 'hydrated').should('be.hidden')
  cy.get('#ref-a').should('have.text', '1')
  cy.get('#ref-b').should('have.text', '1')
  cy.get('#increment-a').click()
  cy.get('#ref-a').should('have.text', '2')
  cy.get('#ref-b').should('have.text', '1')
  cy.get('#increment-b').click()
  cy.get('#ref-a').should('have.text', '2')
  cy.get('#ref-b').should('have.text', '2')
  cy.get('#idempotent-a').click()
  cy.get('#ref-a').should('have.text', '2')
  cy.get('#ref-b').should('have.text', '2')
  cy.get('#idempotent-b').click()
  cy.get('#ref-a').should('have.text', '2')
  cy.get('#ref-b').should('have.text', '2')
  cy.get('#clear-a').click()
  cy.get('#ref-a').should('have.text', '3')
  cy.get('#ref-b').should('have.text', '2')
  cy.get('#clear-b').click()
  cy.get('#ref-a').should('have.text', '3')
  cy.get('#ref-b').should('have.text', '3')
  cy.get('#link').click()
  cy.get('#ref-a').should('have.text', '3')
  cy.get('#ref-b').should('have.text', '3')
})
